// BossShip.java // Created by Shahein Tajmir // Feb 8, 2005 // This creates the BossShip sprite by executing a humongous for-loop which sets // all the necessary // pixels to appropriate values. The humongous array is then converted into an // image object for // use by the program. import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.geom.CubicCurve2D; import java.awt.geom.Ellipse2D; import java.awt.geom.FlatteningPathIterator; import java.awt.geom.PathIterator; import java.util.*; public class BossShip extends Sprite { final static int SCORE = 200; static int ID = 1; // class ID variable private int myID; // Images // image1 = ship when it has 0 hits // image2 = ship when it has 1 hit private Image image1, image2; // Number of hits this ship has obtained private int hits = 0; private boolean expanding = true; public BossShip(int x, int y) { // assigns position of upper left corner this.x = x; this.y = y; this.initialX = x; this.initialY = y; myID = ID; ID++; // creates dimension d = new Dimension(45, 48); // assigns width and height int w = d.width; int h = d.height; int[] pixels1 = new int[w * h]; int[] pixels2 = new int[w * h]; RGBColor[] RGBpixels = new RGBColor[w * h]; int i = 0; // Create colors needed for this image // Colors when hits is 0; RGBColor teal = new RGBColor(255, 0, 157, 151); RGBColor red = new RGBColor(255, 222, 71, 0); RGBColor yellow = new RGBColor(255, 255, 255, 0); // Colors when hits is 1 RGBColor blue = new RGBColor(255, 0, 104, 222); RGBColor pink = new RGBColor(255, 255, 0, 222); RGBColor purple = new RGBColor(255, 151, 0, 222); // Universal Color RGBColor black = new RGBColor(0, 0, 0, 0); // Placeholding variable..black is default color RGBColor color = black; for(int j = 0; j < h; j++) { for(int k = 0; k < w; k++) { if(j <= 5) { if(k <= 17) { color = black; } else if(k <= 20) { color = teal; } else if(k <= 23) { color = black; } else if(k <= 26) { color = teal; } else { color = black; } } else if(j <= 8) { if(k <= 8) { color = black; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = teal; } else if(k <= 17) { color = red; } else if(k <= 20) { color = red; } else if(k <= 23) { color = teal; } else if(k <= 26) { color = red; } else if(k <= 29) { color = red; } else if(k <= 32) { color = teal; } else if(k <= 35) { color = teal; } else { color = black; } } else if(j <= 11) { if(k <= 8) { color = black; } else if(k <= 11) { color = black; } else if(k <= 14) { color = teal; } else if(k <= 17) { color = red; } else if(k <= 20) { color = red; } else if(k <= 23) { color = teal; } else if(k <= 26) { color = red; } else if(k <= 29) { color = red; } else if(k <= 32) { color = teal; } else if(k <= 35) { color = black; } else { color = black; } } else if(j <= 14) { if(k <= 8) { color = black; } else if(k <= 11) { color = black; } else if(k <= 14) { color = black; } else if(k <= 17) { color = teal; } else if(k <= 20) { color = teal; } else if(k <= 23) { color = teal; } else if(k <= 26) { color = teal; } else if(k <= 29) { color = teal; } else if(k <= 32) { color = black; } else if(k <= 35) { color = black; } else { color = black; } } else if(j <= 17) { if(k <= 8) { color = black; } else if(k <= 11) { color = black; } else if(k <= 14) { color = teal; } else if(k <= 17) { color = yellow; } else if(k <= 20) { color = yellow; } else if(k <= 23) { color = teal; } else if(k <= 26) { color = yellow; } else if(k <= 29) { color = yellow; } else if(k <= 32) { color = teal; } else if(k <= 35) { color = black; } else { color = black; } } else if(j <= 20) { if(k <= 5) { color = black; } else if(k <= 8) { color = teal; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = teal; } else if(k <= 17) { color = yellow; } else if(k <= 20) { color = yellow; } else if(k <= 23) { color = yellow; } else if(k <= 26) { color = yellow; } else if(k <= 29) { color = yellow; } else if(k <= 32) { color = teal; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = teal; } else { color = black; } } else if(j <= 23) { if(k <= 2) { color = teal; } else if(k <= 5) { color = teal; } else if(k <= 8) { color = teal; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = teal; } else if(k <= 17) { color = yellow; } else if(k <= 20) { color = yellow; } else if(k <= 23) { color = yellow; } else if(k <= 26) { color = yellow; } else if(k <= 29) { color = yellow; } else if(k <= 32) { color = teal; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = teal; } else if(k <= 41) { color = teal; } else if(k <= 44) { color = teal; } else { color = black; } } else if(j <= 26) { if(k <= 2) { color = black; } else if(k <= 5) { color = teal; } else if(k <= 8) { color = teal; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = teal; } else if(k <= 17) { color = yellow; } else if(k <= 20) { color = yellow; } else if(k <= 23) { color = yellow; } else if(k <= 26) { color = yellow; } else if(k <= 29) { color = yellow; } else if(k <= 32) { color = teal; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = teal; } else if(k <= 41) { color = teal; } else if(k <= 44) { color = black; } else { color = black; } } else if(j <= 29) { if(k <= 2) { color = black; } else if(k <= 5) { color = teal; } else if(k <= 8) { color = red; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = teal; } else if(k <= 17) { color = black; } else if(k <= 20) { color = red; } else if(k <= 23) { color = black; } else if(k <= 26) { color = red; } else if(k <= 29) { color = black; } else if(k <= 32) { color = teal; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = red; } else if(k <= 41) { color = teal; } else if(k <= 44) { color = black; } else { color = black; } } else if(j <= 32) { if(k <= 2) { color = teal; } else if(k <= 5) { color = teal; } else if(k <= 8) { color = red; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = black; } else if(k <= 17) { color = black; } else if(k <= 20) { color = red; } else if(k <= 23) { color = black; } else if(k <= 26) { color = red; } else if(k <= 29) { color = black; } else if(k <= 32) { color = black; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = red; } else if(k <= 41) { color = teal; } else if(k <= 44) { color = teal; } else { color = black; } } else if(j <= 35) { if(k <= 2) { color = teal; } else if(k <= 5) { color = red; } else if(k <= 8) { color = teal; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = black; } else if(k <= 17) { color = black; } else if(k <= 20) { color = black; } else if(k <= 23) { color = black; } else if(k <= 26) { color = black; } else if(k <= 29) { color = black; } else if(k <= 32) { color = black; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = teal; } else if(k <= 41) { color = red; } else if(k <= 44) { color = teal; } else { color = black; } } else if(j <= 41) { if(k <= 2) { color = teal; } else if(k <= 5) { color = red; } else if(k <= 8) { color = red; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = black; } else if(k <= 17) { color = black; } else if(k <= 20) { color = black; } else if(k <= 23) { color = black; } else if(k <= 26) { color = black; } else if(k <= 29) { color = black; } else if(k <= 32) { color = black; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = red; } else if(k <= 41) { color = red; } else if(k <= 44) { color = teal; } else { color = black; } } else if(j <= 44) { if(k <= 2) { color = teal; } else if(k <= 5) { color = teal; } else if(k <= 8) { color = teal; } else if(k <= 11) { color = teal; } else if(k <= 14) { color = black; } else if(k <= 17) { color = black; } else if(k <= 20) { color = black; } else if(k <= 23) { color = black; } else if(k <= 26) { color = black; } else if(k <= 29) { color = black; } else if(k <= 32) { color = black; } else if(k <= 35) { color = teal; } else if(k <= 38) { color = teal; } else if(k <= 41) { color = teal; } else if(k <= 44) { color = teal; } else { color = black; } } else if(j <= 47) { if(k <= 2) { color = black; } else if(k <= 5) { color = teal; } else if(k <= 8) { color = teal; } else if(k <= 11) { color = black; } else if(k <= 14) { color = black; } else if(k <= 17) { color = black; } else if(k <= 20) { color = black; } else if(k <= 23) { color = black; } else if(k <= 26) { color = black; } else if(k <= 29) { color = black; } else if(k <= 32) { color = black; } else if(k <= 35) { color = black; } else if(k <= 38) { color = teal; } else if(k <= 41) { color = teal; } else if(k <= 44) { color = black; } else { color = black; } } RGBpixels[i++] = color; //pixels[i++] = (255 << 24) | (r << 16) | (g << 8) | b; } } for(int n = 0; n < RGBpixels.length; n++) { //pixels1[n] = setPixel(RGBpixels[n]); if(RGBpixels[n] == teal) { pixels1[n] = setPixel(teal); } else if(RGBpixels[n] == red) { pixels1[n] = setPixel(red); } else if(RGBpixels[n] == yellow) { pixels1[n] = setPixel(yellow); } } for(int n = 0; n < RGBpixels.length; n++) { if(RGBpixels[n] == teal) { pixels2[n] = setPixel(blue); } else if(RGBpixels[n] == red) { pixels2[n] = setPixel(pink); } else if(RGBpixels[n] == yellow) { pixels2[n] = setPixel(purple); } } image1 = makeImage(w, h, pixels1); image2 = makeImage(w, h, pixels2); } public void draw(Graphics g, int x, int y) { if(hits == 0) { g.drawImage(image1, x, y, null); } if(hits == 1) { g.drawImage(image2, x, y, null); } } public int getHits() { return hits; } public void hit() { hits++; } public int getID() { return myID; } public void move() { int tempID = this.myID; int distance = 0; switch(tempID) { case 1: distance = initialX - 15; break; case 2: distance = initialX - 5; break; case 3: distance = initialX + 5; break; case 4: distance = initialX + 15; break; } if(tempID == 1) { if(expanding) { if(x > (distance)) { this.translate(-1, 0); } if(x == (distance)) { expanding = false; } } else { if(x < initialX) { this.translate(1, 0); } if(x == initialX) { expanding = true; } } } if(tempID == 2) { if(expanding) { if(x > (distance)) { this.translate(-1, 0); } if(x == (distance)) { expanding = false; } } else { if(x < initialX) { this.translate(1, 0); } if(x == initialX) { expanding = true; } } } } public void setCurve(Point[] points) { attackPoints = points; retreatPoints = new Point[points.length]; int j = points.length - 1; for(int i = 0; i < points.length; i++) { retreatPoints[i] = points[j]; j--; } } public void retreatShip(Vector enemyBullets, PlayerShip player) { for(int i = 0; i < retreatPoints.length; i++) { if(retreatPoints[i] != null) { x = retreatPoints[i].x; y = retreatPoints[i].y; retreatPoints[i] = null; i = attackPoints.length; } if(retreatPoints[retreatPoints.length / 2] == null) { if(randomFireTime > currentFireTime) { } else { } } if(retreatPoints[retreatPoints.length - 1] == null) { retreat = false; x = initialX; y = initialY; } } } public void attackShip(Vector enemyBullets, PlayerShip player) { for(int i = 0; i < attackPoints.length; i++) { if(attackPoints[i] != null) { x = attackPoints[i].x; y = attackPoints[i].y; attackPoints[i] = null; i = attackPoints.length; } if(attackPoints[attackPoints.length / 2] != null) { if(randomFireTime > currentFireTime) { } else { currentFireTime = 0; enemyBullets.add(new EnemyBullet(this, player)); randomFireTime = (int) (((Math.random() * randomFireSeed) + 1) + 60); } } if(attackPoints[attackPoints.length - 1] == null) { attack = false; retreat = true; } } currentFireTime++; } public void setAttack(boolean temp) { attack = temp; } public void setRetreat(boolean temp) { retreat = temp; } public boolean checkTime() { if(randomMoveTime == currentMoveTime) { randomMoveTime = (int) (((Math.random() * randomMoveSeed) + 1) + 50); currentMoveTime = 0; attack = true; return true; } else if(attack || retreat) { return true; } else { currentMoveTime++; return false; } } public boolean isAttacking() { return attack; } public boolean isRetreating() { return retreat; } public int getScore() { return SCORE; } }